home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 1
/
SPACE - Library 1 - Volume 1.iso
/
misc~1
/
5
/
osspascl
/
copy2.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1985-11-19
|
3KB
|
106 lines
PROGRAM copy2_pas ;
{Written in OSS Personal Pascal -- original from OSS -- revision by
David Duberman 3/86}
{Copies list of files in ASCII text file FILE.LST in root directory
to drive C: -- Place in AUTO folder after copying ramdisk utility into
folder}
CONST
chunk_size = 32000 ;
fn_length = 64 ;
TYPE
buffer_type = PACKED ARRAY [ 1..chunk_size ] OF byte ;
file_name_type = PACKED ARRAY [ 1..fn_length ] OF char ;
VAR
fname : STRING ;
buf : buffer_type ;
i,j,in_file, out_file : integer ;
name : file_name_type ;
t: text;
FUNCTION gem_create( VAR fname : file_name_type ; mode : integer ) : integer;
GEMDOS( $3C ) ;
FUNCTION gem_open( VAR fname : file_name_type ; mode : integer ) : integer;
GEMDOS( $3D ) ;
PROCEDURE gem_close( handle : integer ) ;
GEMDOS( $3E ) ;
FUNCTION gem_read( handle : integer ; nbytes : long_integer ;
VAR buf : buffer_type ) : long_integer ;
GEMDOS( $3F ) ;
FUNCTION gem_write( handle : integer ; nbytes : long_integer ;
VAR buf : buffer_type ) : long_integer ;
GEMDOS( $40 ) ;
PROCEDURE gem_seek( nbytes : long_integer ; handle, mode : integer ) ;
GEMDOS( $42 ) ;
PROCEDURE copy_file( in_file, out_file : integer ) ;
VAR
n : long_integer ;
BEGIN
REPEAT
n := gem_read( in_file, chunk_size, buf ) ;
{writeln( 'read chunk of ', n, ' bytes' ) ;}
IF n < 0 THEN
BEGIN
writeln( 'error ', n, ' on input file' ) ;
halt ;
END
ELSE IF n > 0 THEN
IF gem_write( out_file, n, buf ) <> n THEN
BEGIN
writeln( 'error writing output file' ) ;
halt ;
END ;
UNTIL n = 0 ;
END ;
BEGIN
Writeln; Writeln('Fast File Copy Utility'); Writeln;
Writeln('Written in OSS Personal Pascal'); Writeln;
Writeln('Portions copyright (c) 1986 OSS & CCD'); Writeln;
Writeln('Used by permission of OSS'); Writeln;
Reset(t,'file.lst');
while not eof(t) do begin
readln(t,fname);
writeln;
writeln('Copying ',fname);
FOR i := 1 TO length( fname ) DO
name[i] := fname[i] ;
name[ length(fname) + 1 ] := chr(0) ;
in_file := gem_open( name, 0 ) ;
IF in_file < 0 THEN
BEGIN
writeln( 'error ', in_file, ' opening input' ) ;
halt ;
END ;
name[1] := 'c';
name[2] := ':';
FOR i := 1 TO length( fname ) DO
name[i+2] := fname[i] ;
name[ length(fname) + 3 ] := chr(0) ;
out_file := gem_create( name, 0 ) ;
IF out_file < 0 THEN
BEGIN
writeln( 'error ', out_file, ' opening output' ) ;
halt ;
END ;
copy_file( in_file, out_file ) ;
gem_close( in_file ) ;
gem_close( out_file ) ;
end;
close(t)
END.